package proyectoFC_2_3_3.koyicabuto;

import proyectoFC_2_3_3.koyicabuto.custom_menu.CustomMenu.OnMenuItemSelectedListener;
import proyectoFC_2_3_3.koyicabuto.custom_menu.CustomMenuItem;
import proyectoFC_2_3_3.koyicabuto.funciones.Funciones;
import proyectoFC_2_3_3.koyicabuto.funciones.FuncionesBaseDatos;
import proyectoFC_2_3_3.koyicauto.ImageGallery.ImageGalleryActivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class TabDatosUsuarioActivity extends Activity implements OnMenuItemSelectedListener{
	
	private FuncionesBaseDatos funcionesBaseDatos = new FuncionesBaseDatos();
	private Funciones funciones = new Funciones();
	
	private Long idGrupoSeleccionado = null;
	
	private EditText editNombre = null;
	private ImageButton seleccionarFoto = null;
	private int idFotoPerfil = Integer.valueOf(-1);
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabdatosusuario);
        
        idFotoPerfil = Integer.valueOf(-1);
        
        editNombre = (EditText)findViewById(R.id.EditNombre);
        
        cargaDatosUsuario();
        
        this.seleccionarFoto = (ImageButton)findViewById(R.id.BotonSeleccionarFoto);
        
		//TODO:hacer que cargue la foto cuando el usuario la tenga en la BB.DD
        Bundle extras = getIntent().getExtras();
        if(extras != null && extras.containsKey("idGrupoSeleccionado")){
        	idGrupoSeleccionado = extras.getLong("idGrupoSeleccionado");
		}
		if(extras != null && extras.containsKey("idFotoPerfil")){
			idFotoPerfil = extras.getInt("idFotoPerfil");
		}
		if(idFotoPerfil != Integer.valueOf(-1)){			
	        Bitmap thumbnails = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), idFotoPerfil, 
            														  MediaStore.Images.Thumbnails.MICRO_KIND, null);
	        Drawable d = new BitmapDrawable(thumbnails);
	        seleccionarFoto.setBackgroundDrawable(d);
		}else{
			//Vemos si en la BB.DD tiene ya una foto almacenada en su Perfil
			consultaFotoPerfil();
			if(idFotoPerfil != -1){
		        Bitmap thumbnails = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), idFotoPerfil, 
	            														  MediaStore.Images.Thumbnails.MINI_KIND, null);
		        if(thumbnails != null){
		        	Drawable d = new BitmapDrawable(thumbnails);
			        seleccionarFoto.setBackgroundDrawable(d);
		        }else{
			        seleccionarFoto.setBackgroundResource(R.drawable.image_gallery_no_marco);
		        }
			}else{
				seleccionarFoto.setBackgroundResource(R.drawable.image_gallery_no_marco);
			}
		}
    }
	
	public void onClickImagenesGaleria(View view){
		Intent i = new Intent(this, ImageGalleryActivity.class);
		i.putExtra("idGrupoSeleccionado", idGrupoSeleccionado);
        startActivity(i);
	}
	
	/**
	 * Funcion que usamos para cargar los datos del usuario.
	 */
	private void cargaDatosUsuario(){
		boolean error = true;
		String selectGrupo = "SELECT USU_NOMBRE FROM USUARIO ";
		
		String nombreUsuario = null;
		
		SQLiteDatabase gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);
		try{
			if(gruposDataBase != null){
				Cursor cursor = gruposDataBase.rawQuery(selectGrupo, null);

				if(cursor.moveToFirst()){
					do{
						nombreUsuario = cursor.getString(0);
					}while(cursor.moveToNext());
				}
				gruposDataBase.close();
			}			
			error = false;
		}catch (Exception e) {
			error = true;
			System.out.println("Excepcion al guardar: " +e.getMessage());
		}
		
		//TODO:tratamiento Error
		if(!error){
			editNombre.setText(nombreUsuario);
		}
	}
	
	public void onClickBotonGuardar(View view){
		String nombre = this.editNombre.getText().toString();
		
		actualizaUsuario(nombre, idFotoPerfil, view);
	}
	
	/**
	 * Metodo con el que actualizamos los datos del usuario.
	 * @param nombre
	 */
	private void actualizaUsuario(String nombre, Integer idfotoPerfil, View view){
		if(validaActualizaUsuario()){
			boolean error = false;
			
			SQLiteDatabase gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);		
			try{
				if(gruposDataBase != null){
					gruposDataBase.execSQL("UPDATE USUARIO SET USU_NOMBRE = '" + nombre + "', USU_ID_FOTO_PERFIL = " + idFotoPerfil + " ");   
					gruposDataBase.close();
				}
			}catch (Exception e) {
				error = true;
				System.out.println("Excepcion al guardar: " +e.getMessage());
			}
			if(!error){
				ocultarTecladoVirtual(view);
				Toast.makeText(this, "Perfil actualizado.", Toast.LENGTH_SHORT).show();
			}
		}
	}
	
	private boolean validaActualizaUsuario(){
		boolean validado = false;
		
		if(editNombre.getText().toString() != null && !editNombre.getText().toString().isEmpty()){ 
			validado = true;
		}else{
			funciones.crearDialogoAlerta("Error", "Debe de introducir un nombre.", this);
		}
		
		return validado;
	}
	
	public void consultaFotoPerfil(){
		SQLiteDatabase gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);
		String selectFoto = "SELECT USU_ID_FOTO_PERFIL FROM USUARIO ";
		try{
			if(gruposDataBase != null){
				
				Cursor cursor = gruposDataBase.rawQuery(selectFoto, null);
				if(cursor.moveToFirst()){
					do{
						idFotoPerfil = cursor.getInt(0);
					}while(cursor.moveToNext());
				}
				
				gruposDataBase.close();
			}
		}catch (Exception e) {
			System.out.println("Excepcion al consultar foto: " +e.getMessage());
		}
	}
	
	public void ocultarTecladoVirtual(View view){
		
		editNombre.clearFocus();
		
		InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
	}
	
	public void onClickBotonVolver(View view){
		Intent i = new Intent(this, ListaGruposActivity.class);
		startActivity(i);
	}

	public void MenuItemSelectedEvent(CustomMenuItem selection) {
		
	}
}
